home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2001 May / SGI Freeware 2001 May - Disc 1.iso / dist / fw_qt.idb / usr / freeware / include / qlistview.h.z / qlistview.h
Encoding:
C/C++ Source or Header  |  2001-04-12  |  14.1 KB  |  456 lines

  1. /****************************************************************************
  2. ** $Id: qt/src/widgets/qlistview.h   2.3.0   edited 2001-01-26 $
  3. **
  4. ** Definition of QListView widget class
  5. **
  6. ** Created : 970809
  7. **
  8. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  9. **
  10. ** This file is part of the widgets module of the Qt GUI Toolkit.
  11. **
  12. ** This file may be distributed under the terms of the Q Public License
  13. ** as defined by Trolltech AS of Norway and appearing in the file
  14. ** LICENSE.QPL included in the packaging of this file.
  15. **
  16. ** This file may be distributed and/or modified under the terms of the
  17. ** GNU General Public License version 2 as published by the Free Software
  18. ** Foundation and appearing in the file LICENSE.GPL included in the
  19. ** packaging of this file.
  20. **
  21. ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
  22. ** licenses may use this file in accordance with the Qt Commercial License
  23. ** Agreement provided with the Software.
  24. **
  25. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  26. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  27. **
  28. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  29. **   information about Qt Commercial License Agreements.
  30. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  31. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  32. **
  33. ** Contact info@trolltech.com if any conditions of this licensing are
  34. ** not clear to you.
  35. **
  36. **********************************************************************/
  37.  
  38. #ifndef QLISTVIEW_H
  39. #define QLISTVIEW_H
  40.  
  41. class QPixmap;
  42. class QFont;
  43. class QHeader;
  44. class QIconSet;
  45.  
  46. class QListView;
  47. struct QListViewPrivate;
  48. class QListViewItemIterator;
  49.  
  50. #ifndef QT_H
  51. #include "qscrollview.h"
  52. #endif // QT_H
  53.  
  54. #ifndef QT_NO_LISTVIEW
  55.  
  56.  
  57. class Q_EXPORT QListViewItem: public Qt
  58. {
  59.     friend class QListViewItemIterator;
  60. #if defined(_CC_MSVC_)
  61.     friend class QListViewItem;
  62. #endif
  63.  
  64. public:
  65.     QListViewItem( QListView * parent );
  66.     QListViewItem( QListViewItem * parent );
  67.     QListViewItem( QListView * parent, QListViewItem * after );
  68.     QListViewItem( QListViewItem * parent, QListViewItem * after );
  69.  
  70.     QListViewItem( QListView * parent,
  71.            QString,     QString = QString::null,
  72.            QString = QString::null, QString = QString::null,
  73.            QString = QString::null, QString = QString::null,
  74.            QString = QString::null, QString = QString::null );
  75.     QListViewItem( QListViewItem * parent,
  76.            QString,     QString = QString::null,
  77.            QString = QString::null, QString = QString::null,
  78.            QString = QString::null, QString = QString::null,
  79.            QString = QString::null, QString = QString::null );
  80.  
  81.     QListViewItem( QListView * parent, QListViewItem * after,
  82.            QString,     QString = QString::null,
  83.            QString = QString::null, QString = QString::null,
  84.            QString = QString::null, QString = QString::null,
  85.            QString = QString::null, QString = QString::null );
  86.     QListViewItem( QListViewItem * parent, QListViewItem * after,
  87.            QString,     QString = QString::null,
  88.            QString = QString::null, QString = QString::null,
  89.            QString = QString::null, QString = QString::null,
  90.            QString = QString::null, QString = QString::null );
  91.     virtual ~QListViewItem();
  92.  
  93.     virtual void insertItem( QListViewItem * );
  94.     virtual void takeItem( QListViewItem * );
  95.     virtual void removeItem( QListViewItem * ); //obsolete, use takeItem instead
  96.  
  97.     int height() const;
  98.     virtual void invalidateHeight();
  99.     int totalHeight() const;
  100.     virtual int width( const QFontMetrics&,
  101.                const QListView*, int column) const;
  102.     void widthChanged(int column=-1) const;
  103.     int depth() const;
  104.  
  105.     virtual void setText( int, const QString &);
  106.     virtual QString text( int ) const;
  107.  
  108.     virtual void setPixmap( int, const QPixmap & );
  109.     virtual const QPixmap * pixmap( int ) const;
  110.  
  111.     virtual QString key( int, bool ) const;
  112.     virtual void sortChildItems( int, bool );
  113.  
  114.     int childCount() const { return nChildren; }
  115.  
  116.     bool isOpen() const { return open; }
  117.     virtual void setOpen( bool );
  118.     virtual void setup();
  119.  
  120.     virtual void setSelected( bool );
  121.     bool isSelected() const { return selected; }
  122.  
  123.     virtual void paintCell( QPainter *, const QColorGroup & cg,
  124.                 int column, int width, int alignment );
  125.     virtual void paintBranches( QPainter * p, const QColorGroup & cg,
  126.                 int w, int y, int h, GUIStyle s );
  127.     virtual void paintFocus( QPainter *, const QColorGroup & cg,
  128.                  const QRect & r );
  129.  
  130.     QListViewItem * firstChild() const;
  131.     QListViewItem * nextSibling() const { return siblingItem; }
  132.     QListViewItem * parent() const;
  133.  
  134.     QListViewItem * itemAbove();
  135.     QListViewItem * itemBelow();
  136.  
  137.     int itemPos() const;
  138.  
  139.     QListView *listView() const;
  140.  
  141.     virtual void setSelectable( bool enable );
  142.     bool isSelectable() const { return selectable; }
  143.  
  144.     virtual void setExpandable( bool );
  145.     bool isExpandable() const { return expandable; }
  146.  
  147.     void repaint() const;
  148.  
  149.     void sort(); // ######## make virtual in next major release
  150.     void moveItem( QListViewItem *after );
  151.  
  152. protected:
  153.     virtual void enforceSortOrder() const;
  154.     virtual void setHeight( int );
  155.     virtual void activate();
  156.  
  157.     bool activatedPos( QPoint & );
  158. private:
  159.     void init();
  160.     void moveToJustAfter( QListViewItem * );
  161.     int ownHeight;
  162.     int maybeTotalHeight;
  163.     int nChildren;
  164.  
  165.     uint lsc: 14;
  166.     uint lso: 1;
  167.     uint open : 1;
  168.     uint selected : 1;
  169.     uint selectable: 1;
  170.     uint configured: 1;
  171.     uint expandable: 1;
  172.     uint is_root: 1;
  173.  
  174.     QListViewItem * parentItem;
  175.     QListViewItem * siblingItem;
  176.     QListViewItem * childItem;
  177.  
  178.     void * columns;
  179.  
  180.     friend class QListView;
  181. };
  182.  
  183. class QCheckListItem;
  184.  
  185. class Q_EXPORT QListView: public QScrollView
  186. {
  187.     friend class QListViewItemIterator;
  188.     friend class QListViewItem;
  189.     friend class QCheckListItem;
  190.     
  191.     Q_OBJECT
  192.     Q_ENUMS( SelectionMode )
  193.     Q_PROPERTY( int columns READ columns )
  194.     Q_PROPERTY( bool multiSelection READ isMultiSelection WRITE setMultiSelection DESIGNABLE false )
  195.     Q_PROPERTY( SelectionMode selectionMode READ selectionMode WRITE setSelectionMode )
  196.     Q_PROPERTY( int childCount READ childCount )
  197.     Q_PROPERTY( bool allColumnsShowFocus READ allColumnsShowFocus WRITE setAllColumnsShowFocus )
  198.     Q_PROPERTY( bool showSortIndicator READ showSortIndicator WRITE setShowSortIndicator )
  199.     Q_PROPERTY( int itemMargin READ itemMargin WRITE setItemMargin )
  200.     Q_PROPERTY( bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated )
  201.  
  202. public:
  203.     QListView( QWidget * parent, const char *name, WFlags f );
  204.     QListView( QWidget * parent = 0, const char *name = 0 ); // ##### merge with above in 3.0
  205.     ~QListView();
  206.  
  207.     int treeStepSize() const;
  208.     virtual void setTreeStepSize( int );
  209.  
  210.     virtual void insertItem( QListViewItem * );
  211.     virtual void takeItem( QListViewItem * );
  212.     virtual void removeItem( QListViewItem * ); // obsolete, use takeItem instead
  213.  
  214.     virtual void clear();
  215.  
  216.     QHeader * header() const;
  217.  
  218.     virtual int addColumn( const QString &label, int size = -1);
  219.     virtual int addColumn( const QIconSet& iconset, const QString &label, int size = -1);
  220.     void removeColumn( int index ); // #### make virtual in next major release!
  221.     virtual void setColumnText( int column, const QString &label );
  222.     virtual void setColumnText( int column, const QIconSet& iconset, const QString &label );
  223.     QString columnText( int column ) const;
  224.     virtual void setColumnWidth( int column, int width );
  225.     int columnWidth( int column ) const;
  226.     enum WidthMode { Manual, Maximum };
  227.     virtual void setColumnWidthMode( int column, WidthMode );
  228.     WidthMode columnWidthMode( int column ) const;
  229.     int columns() const;
  230.  
  231.     virtual void setColumnAlignment( int, int );
  232.     int columnAlignment( int ) const;
  233.  
  234.     void show();
  235.  
  236.     QListViewItem * itemAt( const QPoint & screenPos ) const;
  237.     QRect itemRect( const QListViewItem * ) const;
  238.     int itemPos( const QListViewItem * );
  239.  
  240.     void ensureItemVisible( const QListViewItem * );
  241.  
  242.     void repaintItem( const QListViewItem * ) const;
  243.  
  244.     virtual void setMultiSelection( bool enable );
  245.     bool isMultiSelection() const;
  246.  
  247.     enum SelectionMode { Single, Multi, Extended, NoSelection  };
  248.     void setSelectionMode( SelectionMode mode );
  249.     SelectionMode selectionMode() const;
  250.  
  251.     virtual void clearSelection();
  252.     virtual void setSelected( QListViewItem *, bool );
  253.     bool isSelected( const QListViewItem * ) const;
  254.     QListViewItem * selectedItem() const;
  255.     virtual void setOpen( QListViewItem *, bool );
  256.     bool isOpen( const QListViewItem * ) const;
  257.  
  258.     virtual void setCurrentItem( QListViewItem * );
  259.     QListViewItem * currentItem() const;
  260.  
  261.     QListViewItem * firstChild() const;
  262.  
  263.     int childCount() const;
  264.  
  265.     virtual void setAllColumnsShowFocus( bool );
  266.     bool allColumnsShowFocus() const;
  267.  
  268.     virtual void setItemMargin( int );
  269.     int itemMargin() const;
  270.  
  271.     virtual void setRootIsDecorated( bool );
  272.     bool rootIsDecorated() const;
  273.  
  274.     virtual void setSorting( int column, bool increasing = TRUE );
  275.     void sort(); // #### make virtual in next major release
  276.  
  277.     virtual void setFont( const QFont & );
  278.     virtual void setPalette( const QPalette & );
  279.  
  280.     bool eventFilter( QObject * o, QEvent * );
  281.  
  282.     QSize sizeHint() const;
  283.     QSize minimumSizeHint() const;
  284.  
  285.     void setShowSortIndicator( bool show );
  286.     bool showSortIndicator() const;
  287.  
  288. public slots:
  289.     void invertSelection(); // ###### make virtual
  290.     void selectAll( bool select ); // make virtual
  291.     void triggerUpdate();
  292.     void setContentsPos( int x, int y );
  293.  
  294. signals:
  295.     void selectionChanged();
  296.     void selectionChanged( QListViewItem * );
  297.     void currentChanged( QListViewItem * );
  298.     void clicked( QListViewItem * );
  299.     void clicked( QListViewItem *, const QPoint &, int );
  300.     void pressed( QListViewItem * );
  301.     void pressed( QListViewItem *, const QPoint &, int );
  302.  
  303.     void doubleClicked( QListViewItem * );
  304.     void returnPressed( QListViewItem * );
  305.     void rightButtonClicked( QListViewItem *, const QPoint&, int );
  306.     void rightButtonPressed( QListViewItem *, const QPoint&, int );
  307.     void mouseButtonPressed( int, QListViewItem *, const QPoint& , int );
  308.     void mouseButtonClicked( int, QListViewItem *,  const QPoint&, int );
  309.  
  310.     void onItem( QListViewItem *item );
  311.     void onViewport();
  312.  
  313.     void expanded( QListViewItem *item );
  314.     void collapsed( QListViewItem *item );
  315.  
  316. protected:
  317.     void contentsMousePressEvent( QMouseEvent * e );
  318.     void contentsMouseReleaseEvent( QMouseEvent * e );
  319.     void contentsMouseMoveEvent( QMouseEvent * e );
  320.     void contentsMouseDoubleClickEvent( QMouseEvent * e );
  321.  
  322.     void focusInEvent( QFocusEvent * e );
  323.     void focusOutEvent( QFocusEvent * e );
  324.  
  325.     void keyPressEvent( QKeyEvent *e );
  326.  
  327.     void resizeEvent( QResizeEvent *e );
  328.  
  329.     void showEvent( QShowEvent * );
  330.  
  331.     void drawContentsOffset( QPainter *, int ox, int oy,
  332.                  int cx, int cy, int cw, int ch );
  333.  
  334.     virtual void paintEmptyArea( QPainter *, const QRect & );
  335.     void enabledChange( bool );
  336.     void styleChange( QStyle& );
  337.  
  338. protected slots:
  339.     void updateContents();
  340.     void doAutoScroll();
  341.  
  342. private slots:
  343.     void changeSortColumn( int );
  344.     void updateDirtyItems();
  345.     void makeVisible();
  346.     void handleSizeChange( int, int, int );
  347.  
  348. private:
  349.     void init();
  350.     void updateGeometries();
  351.     void buildDrawableList() const;
  352.     void reconfigureItems();
  353.     void widthChanged(const QListViewItem*, int c);
  354.     void handleItemChange( QListViewItem *old, bool shift, bool control );
  355.     void selectRange( QListViewItem *from, QListViewItem *to, bool invert, bool includeFirst, bool clearSel = FALSE );
  356.  
  357.     QListViewPrivate * d;
  358.  
  359. private:    // Disabled copy constructor and operator=
  360. #if defined(Q_DISABLE_COPY)
  361.     QListView( const QWidget & );
  362.     QListView &operator=( const QWidget & );
  363. #endif
  364. };
  365.  
  366.  
  367. class Q_EXPORT QCheckListItem : public QListViewItem
  368. {
  369. public:
  370.     enum Type { RadioButton, CheckBox, Controller };
  371.  
  372.     QCheckListItem( QCheckListItem *parent, const QString &text,
  373.             Type = Controller );
  374.     QCheckListItem( QListViewItem *parent, const QString &text,
  375.             Type = Controller );
  376.     QCheckListItem( QListView *parent, const QString &text,
  377.             Type = Controller );
  378.     QCheckListItem( QListViewItem *parent, const QString &text,
  379.             const QPixmap & );
  380.     QCheckListItem( QListView *parent, const QString &text,
  381.             const QPixmap & );
  382.     ~QCheckListItem();
  383.  
  384.     void paintCell( QPainter *,  const QColorGroup & cg,
  385.             int column, int width, int alignment );
  386.     virtual void paintFocus( QPainter *, const QColorGroup & cg,
  387.                  const QRect & r );
  388.     int width( const QFontMetrics&, const QListView*, int column) const;
  389.     void setup();
  390.  
  391.     virtual void setOn( bool );
  392.     bool isOn() const { return on; }
  393.     Type type() const { return myType; }
  394.     QString text() const { return QListViewItem::text( 0 ); }
  395.     QString text( int n ) const { return QListViewItem::text( n ); }
  396.  
  397.     void setEnabled( bool b );
  398.     bool isEnabled() const;
  399.  
  400. protected:
  401.     void paintBranches( QPainter * p, const QColorGroup & cg,
  402.             int w, int y, int h, GUIStyle s );
  403.  
  404.     void activate();
  405.     void turnOffChild();
  406.     virtual void stateChange( bool );
  407.  
  408. private:
  409.     void init();
  410.     Type myType;
  411.     bool on;
  412.     QCheckListItem *exclusive;
  413.  
  414.     void *reserved;
  415. };
  416.  
  417. class Q_EXPORT QListViewItemIterator
  418. {
  419.     friend struct QListViewPrivate;
  420.     friend class QListView;
  421.     friend class QListViewItem;
  422.  
  423. public:
  424.     QListViewItemIterator();
  425.     QListViewItemIterator( QListViewItem *item );
  426.     QListViewItemIterator( const QListViewItemIterator &it );
  427.     QListViewItemIterator( QListView *lv );
  428.  
  429.     QListViewItemIterator &operator=( const QListViewItemIterator &it );
  430.  
  431.     ~QListViewItemIterator();
  432.  
  433.     QListViewItemIterator &operator++();
  434.     const QListViewItemIterator operator++( int );
  435.     QListViewItemIterator &operator+=( int j );
  436.  
  437.     QListViewItemIterator &operator--();
  438.     const QListViewItemIterator operator--( int );
  439.     QListViewItemIterator &operator-=( int j );
  440.  
  441.     QListViewItem *current() const;
  442.  
  443. protected:
  444.     QListViewItem *curr;
  445.     QListView *listView;
  446.  
  447. private:
  448.     void addToListView();
  449.     void currentRemoved();
  450.  
  451. };
  452.  
  453. #endif // QT_NO_LISTVIEW
  454.  
  455. #endif // QLISTVIEW_H
  456.